The use of the Internet's infrastructure for video streaming has proliferated over the last few years as broadband internet access is becoming widely available. Many commercial deployments have relied on hardware based IP multicast routers that are placed strategically within networks maintained by Internet Service Providers (ISPs) to stream video traffic. However, such hardware based approaches are quite expensive to setup and difficult to extend beyond the bounds of a single ISP.
To circumvent the problem of having to deploy and setup expensive multicast routers, an alternative approach is to strategically place high availability servers close to target customers and have them download from those servers. Such an approach also suffers from the expenses of buying the necessary bandwidth from Content Delivery Networks (CDNs). Such bandwidth may often not quite match the customers' demands, resulting in either over or under investment.
In order to attain greater flexibility and minimize bandwidth purchases, software based approaches for media dissemination has been presented. Such approaches came to be known as application level multicast (ALM). These approaches exploit to varying degree the available upload bandwidth that end users have to forward video streams.
Peer-to-peer (P2P) networks comprise any networks having a distributed network architecture composed of entities that each provides access to a portion of their resources (e.g., processing capacity, disk storage, and/or bandwidth) to other entities. The P2P concept differs from traditional client/server architecture based networks where one or more entities (e.g., computers) are dedicated to serving the others in the network. Typically, entities in a P2P network run similar networking protocols and software. Applications for P2P networks are numerous and may for example comprise transporting and/or storing data on the Internet, such as video distribution for content owners.
P2P streaming approaches can be broadly divided into two categories: tree-based and mesh-based. In the tree-based approaches, one or more tree overlays are constructed through which sub-streams are disseminated from a root node of each tree to all the nodes in the network. Such approach may allow for a degree of fault tolerance where Multiple Descriptor Coded (MDC) content is pushed, one descriptor at a time, through each tree. In contrast in the mesh-based approaches, nodes randomly interact with each other, and explicitly request data which they do not have from other nodes. These two approaches have complementary advantages and disadvantages. The tree approach has an advantage in that it can push data at a high rate to the nodes in the tree, without a high setup cost. However, its structure is relatively inflexible. The mesh-based approaches have the advantage that they are very resilient to failures and churn, as no specific rigid overlay structure, such as a tree, needs to be maintained. Its disadvantage is that it can have a long setup time, as nodes need to negotiate with each other to find peers.